<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div><h1 id="-">查找替换</h1>
<h2 id="labdoc-header-0">一、实验介绍</h2>
<h3 id="labdoc-header-1">1.1　实验内容</h3>
<p>查找和替换是编辑器中最常用的功能之一，在普通编辑器当中查找替换时，你可能需要先移动鼠标在菜单中点击查找的功能，输入查找内容，再点击确认查找。而在vim中，所有的操作只需要敲击几下键盘就行了，手不用离开键盘区域，速度自然会快很多很多。</p><h3 id="labdoc-header-2">1.2 实验知识点</h3>
<ul>
<li>字符替换命令</li>
<li>字符查找命令</li>
</ul>
<h2 id="labdoc-header-3">二、实验步骤</h2>
<h3 id="labdoc-header-4">2.1 字符的替换及撤销(Undo操作)</h3>
<h4 id="2-1-1-undo-">2.1.1 替换和撤销(Undo)命令</h4>
<p>替换和Undo命令都是针对普通模式下的操作</p><table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>r</code>+&lt;待替换字母&gt;</td>
<td>将游标所在字母替换为指定字母</td>
</tr>
<tr>
<td><code>R</code></td>
<td>连续替换，直到按下<code>Esc</code></td>
</tr>
<tr>
<td><code>cc</code></td>
<td>替换整行，即删除游标所在行，并进入插入模式</td>
</tr>
<tr>
<td><code>cw</code></td>
<td>替换一个单词，即删除一个单词，并进入插入模式</td>
</tr>
<tr>
<td><code>C</code>(大写)</td>
<td>替换游标以后至行末</td>
</tr>
<tr>
<td><code>~</code></td>
<td>反转游标所在字母大小写</td>
</tr>
<tr>
<td><code>u</code>{n}</td>
<td>撤销一次或n次操作</td>
</tr>
<tr>
<td><code>U</code>(大写)</td>
<td>撤销当前行的所有修改</td>
</tr>
<tr>
<td><code>Ctrl+r</code></td>
<td>redo，即撤销undo的操作</td>
</tr>
</tbody>
</table>
<p>打开文件进行编辑：</p><pre><code class="line-numbers language-js"><span class="hljs-meta">$</span><span class="bash"> vim practice_2</span>
<span class="hljs-meta"><span class="hljs-comment">#</span></span><span class="bash"><span class="hljs-comment"> 输入以下文本</span></span>
www.goodqd.cn
</code></pre><p>然后依次进行如下操作</p><ul>
<li>输入<code>fa</code> 跳转到第一个<code>a</code>字符</li>
<li>输入<code>r</code>，并且输入b，a字符被b字符替换（实用）</li>
<li>输入<code>R</code>替换字符，输入新字符串，输入完按ESC回到普通模式（实用）</li>
<li>输入<code>cc</code>替换整行字符，输入新字符串，输入完按ESC回到普通模式</li>
<li>输入<code>cw</code> 替换一个英文字(word)，输入完按ESC回到普通模式（实用）</li>
<li>输入<code>~</code>，翻转游标所在字符的大小写</li>
<li>输入<code>C</code> 替换至行尾，即游标所在处以后的字都会被替换，输入完按ESC回到普通模式</li>
<li>输入<code>u</code> 撤销上一次的操作</li>
</ul>
<p></p><p>最后可以尝试下输入更多行的文本内容，并进行跳转到指定行的操作：</p><ul>
<li>输入<code>2G</code>，跳转到2行</li>
</ul>
<h3 id="labdoc-header-5">2.2 快速缩进</h3>
<h4 id="2-2-1-">2.2.1 使用命令进行快速调整缩进操作</h4>
<p>这一小节学习如何在vim中进行快速缩进，缩进操作均在普通模式下有效</p><p>打开文件进行编辑</p><pre><code class="line-numbers language-js"><span class="hljs-meta">$</span><span class="bash"> vim protocols</span>
</code></pre><ul>
<li>普通模式下输入<code>15G</code>，跳转到15行</li>
<li>普通模式下输入<code>&gt;&gt;</code> 整行将向右缩进（使用，用于格式化代码超爽）</li>
<li>普通模式下输入<code>&lt;&lt;</code> 整行向左回退</li>
<li>普通模式下输入<code>:</code>进入命令行模式下对<code>shiftwidth</code>值进行设置可以控制缩进和回退的字符数</li>
</ul>
<h4 id="2-2-2-shiftwidth-">2.2.2 shiftwidth命令</h4>
<p><code>shiftwidth</code>命令是指上一节<code>&gt;&gt;</code>命令产生的缩进（可以简写成<code>sw</code>）
普通模式下输入<code>:</code>进入命令行模式下对<code>shiftwidth</code>值进行设置可以控制缩进和回退的字符数
获取目前的设定值</p><pre><code class="hljs bash">:<span class="hljs-builtin-name"><span class="hljs-built_in">set</span></span> shiftwidth?
</code></pre><p>设置缩进为10个字符</p><pre><code class="hljs bash">:<span class="hljs-builtin-name"><span class="hljs-built_in">set</span></span> <span class="hljs-attribute">shiftwidth</span>=10
</code></pre><p>输入<code>ESC</code>回到普通模式，再次尝试<code>&gt;&gt;</code>看缩进量是否变化</p><h4 id="2-2-3-">2.2.3 调整文本位置</h4>
<p>命令行模式下输入<code>:ce</code>(center)命令使本行内容居中</p><pre><code class="hljs css"><span class="hljs-symbol"><span class="hljs-selector-pseudo">:ce</span></span>
</code></pre><p>命令行模式下输入<code>:ri</code>(right)命令使本行文本靠右</p><pre><code class="hljs css"><span class="hljs-symbol"><span class="hljs-selector-pseudo">:ri</span></span>
</code></pre><p>命令行模式下输入:<code>le</code>(left)命令使本行内容靠左</p><pre><code class="hljs css"><span class="hljs-symbol"><span class="hljs-selector-pseudo">:le</span></span>
</code></pre><p>2.3 查找</h3>
<h4 id="2-3-1-">2.3.1 快速查找</h4>
<p>普通模式下输入 <code>/</code> 然后键入需要查找的字符串 按回车后就会进行查找。
<code>？</code> 与<code>/</code> 功能相同，只不过 <code>？</code> 是向上而 <code>/</code> 是向下查找。
进入查找之后，输入<code>n</code> 和 <code>N</code> 可以继续查找
<code>n</code>表示继续查找，<code>N</code> 反向查找</p><h4 id="2-3-2-">2.3.2 快速查找练习</h4>
<p>使用vim打开文件进行编辑（搜索高亮需要在配置文件 <code>.vimrc</code> 中设置 <code>set hls</code> ，实验环境中已经设置好了）</p><pre><code class="line-numbers language-js"><span class="hljs-meta">$</span><span class="bash"> vim protocols</span>
</code></pre><ul>
<li>普通模式下输入<code>/icmp</code>然后回车即可查找字符串 <code>icmp</code></li>
<li>普通模式下输入<code>n</code>查找下一个 <code>icmp</code></li>
<li>普通模式下输入<code>？tcp</code>向上查找字符串 <code>tcp</code></li>
<li>普通模式下输入<code>N</code>查找上一个出现的 <code>tcp</code></li>
<li>命令行模式下输入 <code>noh</code> 然后回车即可取消搜索</li>
</ul>
<h4 id="2-3-3-">2.3.3 高级查找</h4>
<ul>
<li>普通模式下输入<code>\*</code>寻找游标所在处的单词</li>
<li>普通模式下输入<code>\#</code>同上，但 <code>\#</code> 是向前（上）找，<code>\*</code>则是向后（下）找</li>
<li>普通模式下输入<code>g\*</code>同<code>\*</code> ，但部分符合该单词即可</li>
<li>普通模式下输入<code>g\#</code>同<code>\#</code> ，但部分符合该单词即可</li>
</ul>
<p>以上查找<code>n</code>,<code>N</code> 的继续查找命令依然可以用</p><h2 id="labdoc-header-7">三、实验总结</h2>
<p>这一节学习了替换，撤销操作及快速查找，其中替换和文档内快速查找的功能十分实用，希望能够熟练掌握</p></div>
</body>
</html>